package com.wuyou.web.redis.config;

import com.wuyou.web.redis.config.propertise.DevRedisProperties;
import com.wuyou.web.redis.config.propertise.TestRedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.StringRedisTemplate;

import javax.annotation.Resource;

/**
 * Created by glinlf's IDEA
 *
 * @Author glinlf
 * @DATE 2018/1/25 11:02
 * Description: 配置redis多数据源连接
 * 新的连接如果有特别配置需求 可以重写 redisConfig里的链接方法和末班初始化方法
 */

@Configuration
public class TemplateRedisConfig extends RedisConfig{

    @Resource
    private DevRedisProperties devRedisProperties;

    @Resource
    private TestRedisProperties testRedisProperties;

    /**
     * 配置 开发redis连接
     *
     * @return
     */
    @Bean(name = "stringRedisTemplateDev")
    public StringRedisTemplate stringRedisTemplateDev() {

        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();

        // 配置redis链接
        stringRedisTemplate.setConnectionFactory(super.redisConnectionFactory(devRedisProperties));

        // 初始化模板链接和配置
        super.initDomainTemplate(stringRedisTemplate);

        return stringRedisTemplate;
    }

    /**
     * 配置测试redis连接
     *
     * @return
     */
    @Bean(name = "stringRedisTemplateTest")
    public StringRedisTemplate stringRedisTemplateTest() {

        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();

        // 配置redis链接
        stringRedisTemplate.setConnectionFactory(super.redisConnectionFactory(testRedisProperties));

        // 初始化模板链接和配置
        super.initDomainTemplate(stringRedisTemplate);

        return stringRedisTemplate;
    }


    /**
     * 第一个数据源redis 链接 template
     *
     * @param hostName
     * @param password
     * @param port
     * @param database
     * @param timeOut
     * @param maxIdle
     * @param maxTotal
     * @param maxWaitMillis
     * @param testOnBorrow
     * @return
     */
//    @Bean(name = "stringRedisTemplateDev")
//    public StringRedisTemplate stringRedisTemplateDev(
//            @Value("${redisDev.hostName}") String hostName,
//            @Value("${redisDev.password}") String password,
//            @Value("${redisDev.port}") int port,
//            @Value("${redisDev.database}") int database,
//            @Value("${redisDev.timeOut}") int timeOut,
//            @Value("${redisDev.maxIdle}") int maxIdle,
//            @Value("${redisDev.maxTotal}") int maxTotal,
//            @Value("${redisDev.maxWaitMillis}") long maxWaitMillis,
//            @Value("${redisDev.testOnBorrow}") boolean testOnBorrow
//
//    ) {
//
//
//        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
//
//        // 配置redis链接
//        stringRedisTemplate.setConnectionFactory(redisConfig.redisConnectionFactory(
//                hostName,
//                password,
//                port,
//                database,
//                timeOut,
//                maxIdle,
//                maxTotal,
//                maxWaitMillis,
//                testOnBorrow
//        ));
//
//        stringRedisTemplate.setConnectionFactory(redisConfig.redisConnectionFactory(
//                hostName,
//                password,
//                port,
//                database,
//                timeOut,
//                maxIdle,
//                maxTotal,
//                maxWaitMillis,
//                testOnBorrow
//        ));
//
//        // 初始化模板链接和配置
//        redisConfig.initDomainTemplate(stringRedisTemplate);
//
//        return stringRedisTemplate;
//    }

    /**
     * 第二个数据源redis 链接 template
     *
     * @param hostName
     * @param password
     * @param port
     * @param database
     * @param timeOut
     * @param maxIdle
     * @param maxTotal
     * @param maxWaitMillis
     * @param testOnBorrow
     * @return
     */
//    @Bean(name = "stringRedisTemplateTest")
//    public StringRedisTemplate stringRedisTemplateTest(
//            @Value("${redisTest.hostName}") String hostName,
//            @Value("${redisTest.password}") String password,
//            @Value("${redisTest.port}") int port,
//            @Value("${redisTest.database}") int database,
//            @Value("${redisTest.timeOut}") int timeOut,
//            @Value("${redisTest.maxIdle}") int maxIdle,
//            @Value("${redisTest.maxTotal}") int maxTotal,
//            @Value("${redisTest.maxWaitMillis}") long maxWaitMillis,
//            @Value("${redisTest.testOnBorrow}") boolean testOnBorrow
//
//    ) {
//
//
//        StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
//
//        // 配置redis链接
//        stringRedisTemplate.setConnectionFactory(redisConfig.redisConnectionFactory(
//                hostName,
//                password,
//                port,
//                database,
//                timeOut,
//                maxIdle,
//                maxTotal,
//                maxWaitMillis,
//                testOnBorrow
//        ));
//
//        // 初始化模板链接和配置
//        redisConfig.initDomainTemplate(stringRedisTemplate);
//
//        return stringRedisTemplate;
//    }


}
